// select32NumbersByS3.js

/**
 * S3 策略：基于马尔科夫模型预测下一期可能出现的 32 个号码。
 * @param {Array} history - 历史开奖数据数组（每项格式为 { number: 'xx', time: 'xxxx-xx-xx' }）
 * @param {Object} transitionMatrix - 号码转移矩阵，会被持续更新（引用传递）
 * @returns {string[]} - 长度为 32 的预测号码数组
 */
function select32NumbersByS3(history, transitionMatrix) {
  if (!Array.isArray(history) || history.length === 0) return [];

  const lastIndex = history.length - 1;
  const lastNumber = history[lastIndex]?.number;

  // 预测依据为上期号码对应的转移频率
  const transitionRow = transitionMatrix[lastNumber];
  if (!transitionRow) return [];

  // 从高频转移中挑选前 32 个号码
  const selected = Object.entries(transitionRow)
    .sort((a, b) => b[1] - a[1])
    .map(([num]) => num)
    .slice(0, 32);

  return selected;
}

module.exports = select32NumbersByS3;